//package com.stack.common.utils;
//
//import com.itextpdf.text.pdf.PdfReader;
//import org.apache.pdfbox.pdmodel.PDDocument;
//import org.apache.pdfbox.rendering.PDFRenderer;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//
//import javax.imageio.ImageIO;
//import java.awt.*;
//import java.awt.image.BufferedImage;
//import java.io.File;
//import java.io.IOException;
//import java.util.ArrayList;
//import java.util.List;
//
///**
// * PDF文件转成多张图片
// * @author
// */
//public class Pdf2ImgUtil {
//
//    private static Logger logger = LoggerFactory.getLogger(Pdf2ImgUtil.class);
//
//    /**
//     * main方法
//     */
//    public static void main(String[] args) {
//        pdfToImage("/Users/apple/Documents/文档文件/建筑工人管理服务信息数据对接标准20190919.pdf", "/Users/apple/Documents/pictures/itext", 128);
//    }
//
//    /**
//     * PDF文件转PNG图片，全部页数
//     *
//     * @param PdfFilePath  pdf完整路径
//     * @param dstImgFolder 图片存放的文件夹
//     * @param dpi dpi越大转换后越清晰，相对转换速度越慢
//     * @return 返回转换后图片集合list
//     */
//    public static List<File> pdfToImage(String PdfFilePath, String dstImgFolder, float dpi) {
//        File file = new File(PdfFilePath);
//        //定义集合保存返回图片数据
//        List<File> fileList = new ArrayList<File>();
//        @SuppressWarnings("resource")//抑制警告
//        PDDocument pdDocument = null;
//        try {
//            //String imagePDFName = file.getName().substring(0, dot); // 获取图片文件名
//            String imgFolderPath = null;
//            if (dstImgFolder.endsWith(File.separator)) {
//                imgFolderPath = dstImgFolder;   // 获取图片存放的文件夹路径
//            } else {
//                imgFolderPath = dstImgFolder + File.separator;
//            }
//            if (createDirectory(imgFolderPath)) {
//                pdDocument = PDDocument.load(file);
//                PDFRenderer renderer = new PDFRenderer(pdDocument);
//                /* dpi越大转换后越清晰，相对转换速度越慢 */
//                PdfReader reader = new PdfReader(PdfFilePath);
//                int pages = reader.getNumberOfPages();
//                logger.info("PDF文档转PNG图片:   pdf总共多少页-----" + pages);
//                StringBuffer imgFilePath = null;
//                for (int i = 0; i < pages; i++) {
//                    imgFilePath = new StringBuffer();
//                    imgFilePath.append(imgFolderPath);
//                    imgFilePath.append(String.valueOf(i));
//                    imgFilePath.append(".png");
//                    File dstFile = new File(imgFilePath.toString());
//                    BufferedImage image = renderer.renderImageWithDPI(i, dpi);
//                    ImageIO.write(image, "png", dstFile);
//                    fileList.add(dstFile);
//                }
//                return fileList;
//            } else {
//                System.out.println("PDF文档转PNG图片失败：" + "创建" + imgFolderPath + "失败");
//                return null;
//            }
//        } catch (IOException e) {
//            logger.error("PDF文档转PNG图片失败：", e);
//            return null;
//        } finally {
//            try {
//                pdDocument.close();
//            } catch (IOException e) {
//                logger.error("PDF文件转图片 - 关闭PDF文件失败！！！ ", e);
//            }
//        }
//    }
//
//    public static List<File> pdf2ImgV2(String PdfFilePath, String dstImgFolder, float dpi) {
//        File file = new File(PdfFilePath);
//        //定义集合保存返回图片数据
//        List<File> fileList = new ArrayList<File>();
//        @SuppressWarnings("resource")//抑制警告
//        PDDocument pdDocument = null;
//        try {
//            //String imagePDFName = file.getName().substring(0, dot); // 获取图片文件名
//            String imgFolderPath = null;
//            if (dstImgFolder.endsWith(File.separator)) {
//                imgFolderPath = dstImgFolder;   // 获取图片存放的文件夹路径
//            } else {
//                imgFolderPath = dstImgFolder + File.separator;
//            }
//            if (createDirectory(imgFolderPath)) {
//                pdDocument = PDDocument.load(file);
//                PDFRenderer renderer = new PDFRenderer(pdDocument);
//                /* dpi越大转换后越清晰，相对转换速度越慢 */
//                PdfReader reader = new PdfReader(PdfFilePath);
//                int pages = reader.getNumberOfPages();
//                logger.info("PDF文档转PNG图片:   pdf总共多少页-----" + pages);
//                StringBuffer imgFilePath = null;
//                for (int i = 0; i < pages; i++) {
//                    imgFilePath = new StringBuffer();
//                    imgFilePath.append(imgFolderPath);
//                    imgFilePath.append(String.valueOf(i));
//                    imgFilePath.append(".png");
//                    File dstFile = new File(imgFilePath.toString());
//                    BufferedImage image = renderer.renderImageWithDPI(i, dpi);
//
////                    if (i != pages - 1) {
////                        //以下代码实现将图片转为黑白图片
////                        image.getGraphics().drawImage(image, 0, 0, null);
////                        for (int y = 0; y < image.getHeight(); y++) {
////                            for (int x = 0; x < image.getWidth(); x++) {
////                                Color pixel = new Color(image.getRGB(x, y));
////                                image.setRGB(x, y, new Color(getGray(pixel), getGray(pixel), getGray(pixel)).getRGB());
////                            }
////                        }
////                    }
//
//                    ImageIO.write(image, "png", dstFile);
//                    fileList.add(dstFile);
//                }
//                return fileList;
//            } else {
//                System.out.println("PDF文档转PNG图片失败：" + "创建" + imgFolderPath + "失败");
//                return null;
//            }
//        } catch (IOException e) {
//            logger.error("PDF文档转PNG图片失败：", e);
//            return null;
//        } finally {
//            try {
//                pdDocument.close();
//            } catch (IOException e) {
//                logger.error("PDF文件转图片 - 关闭PDF文件失败！！！ ", e);
//            }
//        }
//    }
//
//    /**
//     * PDF文件转PNG图片，全部页数
//     *
//     * @param PdfFilePath  pdf完整路径
//     * @param dstImgFolder 图片存放的文件夹
//     * @param dpi dpi越大转换后越清晰，相对转换速度越慢
//     * @return 返回转换后图片集合list
//     */
//    public static List<File> pdfToColorfullImage(String PdfFilePath, String dstImgFolder, float dpi) {
//        File file = new File(PdfFilePath);
//        //定义集合保存返回图片数据
//        List<File> fileList = new ArrayList<File>();
//        @SuppressWarnings("resource")//抑制警告
//        PDDocument pdDocument = null;
//        try {
//            //String imagePDFName = file.getName().substring(0, dot); // 获取图片文件名
//            String imgFolderPath = null;
//            if (dstImgFolder.endsWith(File.separator)) {
//                imgFolderPath = dstImgFolder;   // 获取图片存放的文件夹路径
//            } else {
//                imgFolderPath = dstImgFolder + File.separator;
//            }
//            if (createDirectory(imgFolderPath)) {
//                pdDocument = PDDocument.load(file);
//                PDFRenderer renderer = new PDFRenderer(pdDocument);
//                /* dpi越大转换后越清晰，相对转换速度越慢 */
//                PdfReader reader = new PdfReader(PdfFilePath);
//                int pages = reader.getNumberOfPages();
//                logger.info("PDF文档转PNG图片:   pdf总共多少页-----" + pages);
//                StringBuffer imgFilePath = null;
//                for (int i = 0; i < pages; i++) {
//                    imgFilePath = new StringBuffer();
//                    imgFilePath.append(imgFolderPath);
//                    imgFilePath.append(String.valueOf(i));
//                    imgFilePath.append(".png");
//                    File dstFile = new File(imgFilePath.toString());
//                    BufferedImage image = renderer.renderImageWithDPI(i, dpi);
//                    ImageIO.write(image, "png", dstFile);
//                    fileList.add(dstFile);
//                }
//                return fileList;
//            } else {
//                System.out.println("PDF文档转PNG图片失败：" + "创建" + imgFolderPath + "失败");
//                return null;
//            }
//        } catch (IOException e) {
//            logger.error("PDF文档转PNG图片失败：", e);
//            return null;
//        } finally {
//            try {
//                pdDocument.close();
//            } catch (IOException e) {
//                logger.error("PDF文件转图片 - 关闭PDF文件失败！！！ ", e);
//            }
//        }
//    }
//
//    //创建文件夹
//    private static boolean createDirectory(String folder) {
//        File dir = new File(folder);
//        if (dir.exists()) {
//            return true;
//        } else {
//            return dir.mkdirs();
//        }
//    }
//
//    //删除文件夹
//    //param folderPath 文件夹完整绝对路径
//    public static void delFolder(String folderPath) {
//        try {
//            delAllFile(folderPath); //删除完里面所有内容
//            String filePath = folderPath;
//            filePath = filePath.toString();
//            File myFilePath = new File(filePath);
//            myFilePath.delete(); //删除空文件夹
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//    }
//
//
//    //删除指定文件夹下所有文件
//    //param path 文件夹完整绝对路径
//    public static boolean delAllFile(String path) {
//        boolean flag = false;
//        File file = new File(path);
//        if (!file.exists()) {
//            return flag;
//        }
//        if (!file.isDirectory()) {
//            return flag;
//        }
//        String[] tempList = file.list();
//        File temp = null;
//        for (int i = 0; i < tempList.length; i++) {
//            if (path.endsWith(File.separator)) {
//                temp = new File(path + tempList[i]);
//            } else {
//                temp = new File(path + File.separator + tempList[i]);
//            }
//            if (temp.isFile()) {
//                temp.delete();
//
//            }
//            if (temp.isDirectory()) {
//                delAllFile(path + File.separator + tempList[i]);//先删除文件夹里面的文件
//                delFolder(path + File.separator + tempList[i]);//再删除空文件夹
//                flag = true;
//            }
//        }
//        return flag;
//    }
//
//    /**
//     * 获取像素点的灰度
//     * @param color
//     * @return
//     */
//    public static int getGray(Color color) {
//        return (color.getRed() * 30 + color.getGreen() * 60 + color.getBlue() * 10) / 100;
//    }
//}